/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import pessoas.collection.Contatos;
import pessoas.dataHora.DataHora;
import pessoas.model.Usuario;
import pessoas.serializacao.serializacaoXML;
import pessoas.view.ExportarView;

/**
 *
 * @author Bush
 */
public class ExportarPresenter {

    private ExportarView view;
    private Contatos contatos;
    private String caminho = "";
    private Usuario usuario;
    private DataHora dataHora;

    public ExportarPresenter(Usuario usu, Contatos contatos) {
        view = new ExportarView();
        this.contatos = contatos;
        this.usuario = usu;
        dataHora = new DataHora();

        view.getBtnExportar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    exportar();
                } catch (FileNotFoundException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        });

        view.getBtnDiretorio().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                diretorio();
            }
        });

        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                fechar();
            }
        });
        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    public void exportar() throws FileNotFoundException, Exception {
        try {
            serializacaoXML serializacao = new serializacaoXML();
            serializacao.gravaXMLContatos(contatos.getContatos(), caminho);
            JOptionPane.showMessageDialog(null, "Lista de contato exportada com sucesso!!\nDiretório: " + caminho);
            contatos.gravarLog("<" + contatos.getContatos().size() + "> contatos  exportados,<<" + dataHora.getHora() + ">>,<<" + dataHora.getData()
                + ">>,<<" + this.usuario.getNomeUsuario() + ">>.");
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            contatos.gravarLog("Falha:" + ex.getMessage() + " durante a <<Exportação>>" + dataHora.getHora() + ">>,<<" + dataHora.getData()
                    + ">>,<<" + this.usuario.getNomeUsuario() + ">>.");
        }
    }

    public void diretorio() {
        JFileChooser fc = new JFileChooser();
        int res = fc.showSaveDialog(null);
        try {
            if (res == JFileChooser.APPROVE_OPTION) {
                File arquivo = fc.getSelectedFile();
                caminho = arquivo.getPath() + view.getComboFormato().getSelectedItem().toString();
            } else {
                throw new Exception("Voce nao selecionou nenhum Diretório");
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

    public void fechar() {
        view.dispose();
    }

}
